home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 23 / AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso / Updates / HD-Installer / -WHDLoad- / WHDLoad_dev / Patcher1.04 / PARAMQTX / parampopulous.asm < prev   
Assembly Source File  |  1999-11-08  |  16KB  |  529 lines

  1. ;fixed:    diskprotectionchecks caused crashs on 68020+
  2. ;    delays added, game was too fast
  3.  
  4. ;In this example the first file will be read, altered and saved.
  5. ;The second file will be read, processed, altered and saved.
  6.  
  7.  
  8.     INCDIR    ASM-ONE:INCLUDE2.0/
  9.  
  10.     INCLUDE    OWN/Patcher.I
  11.  
  12. HP    MOVEQ.L    #20,D0
  13.     RTS
  14.     DC.L    MAINTAB
  15.     DC.B    'PTCH'
  16.     DC.B    '$VER:PARAM_POPULOUS_1.0',0
  17.     EVEN
  18.  
  19. MAINTAB    DC.L    PCH_PROCESSING,PROCESSINGARRAY
  20.     DC.L    PCH_FILECOUNT,2
  21.     DC.L    PCH_ADAPTOR,ADNAME
  22.     DC.L    PCH_DISKNAME,DISKNAMEARRAY
  23.     DC.L    PCH_FILENAME,FILENAMEARRAY
  24.     DC.L    PCH_CHANGES,CHANGESARRAY    
  25.     DC.L    PCH_NAME,PARAMNAME
  26.     DC.L    PCH_DATALENGTH,LENGTHTABLE
  27.     DC.L    0
  28.  
  29. ADNAME    DC.B    'Cracked by Quartex,',$a,'adapted and fixed by Harry.',0
  30.     EVEN
  31.  
  32.  
  33. PARAMNAME    DC.B    'Populous V2.7ß',0
  34.     EVEN
  35.  
  36.  
  37. DISKNAMEARRAY    DC.L    DISK1NAME
  38.     DC.L    DISK1NAME
  39. DISK1NAME    DC.B    'Populous',0
  40.     EVEN
  41.  
  42.  
  43. FILENAMEARRAY    DC.L    FILE1NAME
  44.     DC.L    FILE2NAME
  45. FILE1NAME    DC.B    'Populous',0
  46.     EVEN
  47. FILE2NAME    DC.B    'Populous.prg',0
  48.     EVEN
  49.  
  50. LENGTHTABLE    DC.L    29116
  51.     DC.L    89092
  52.  
  53.  
  54. CHANGESARRAY    DC.L    CHANGE1
  55.     DC.L    CHANGE2
  56.     
  57. CHANGE1
  58.     DC.B    $00,$80,$04,$D0,$17,$0C,$40,$02
  59.     DC.B    $80,$6E,$70,$30,$39,$00,$DF,$F0
  60.     DC.B    $04,$B0,$79,$00,$DF,$F0,$04,$67
  61.     DC.B    $00,$FF,$F8,$4A,$00,$80,$04,$E8
  62.     DC.B    $20,$82,$FC,$66,$58,$0C,$6C,$00
  63.     DC.B    $9C,$82,$FE,$6D,$14,$0C,$6C,$00
  64.     DC.B    $AA,$82,$FE,$6C,$0C,$0C,$6C,$00
  65.     DC.B    $E7,$83,$00,$6D,$04,$70,$03,$60
  66.     DC.B    $30,$00,$05,$0B,$AA,$80,$05,$0E
  67.     DC.B    $02,$6D,$14,$80,$05,$13,$07,$B8
  68.     DC.B    $82,$FE,$6C,$0C,$0C,$6C,$00,$80
  69.     DC.B    $05,$1B,$21,$E7,$83,$00,$6D,$04
  70.     DC.B    $70,$02,$60,$14,$0C,$6C,$00,$B8
  71.     DC.B    $82,$FE,$6D,$10,$0C,$6C,$00,$F1
  72.     DC.B    $83,$00,$6D,$08,$70,$01,$4E,$71
  73.     DC.B    $29,$40,$82,$88,$00,$80,$1E,$1D
  74.     DC.B    $12,$43,$52,$41,$43,$4B,$45,$44
  75.     DC.B    $20,$42,$59,$20,$20,$51,$20,$55
  76.     DC.B    $20,$41,$20,$80,$1E,$30,$04,$20
  77.     DC.B    $54,$20,$45,$80,$1E,$35,$04,$58
  78.     DC.B    $20,$20,$21,$40,$00,$00
  79.     EVEN
  80.  
  81. PROCESSINGARRAY    DC.L    0
  82.     DC.L    DECRYPT
  83.  
  84.  
  85. ;THE LENGTH OF "POPULOUS.PRG" IS $15C04
  86.  
  87. ;DECRYPT USES THE REGISTERS A0-A3 AND D0-D1 AND D5-D7
  88. ;IF THE VERSION OF POPULOUS IS NOT ß2.7, THE DECRYPT WILL TOTALLY CRASH DOWN
  89. ;THE VERSION OF POPULOUS CAN BE CHECKED AT THE BOOTCLI OF THE POPULOUSDISK
  90.  
  91. DECRYPT    MOVE.L    4(A5),A3        ;BUFFER OF FILE IN MEMORY
  92.     cmp.l    #$3d42649a,$1000(a3)
  93.     beq.s    .exe
  94.     clr.l    d0
  95.     rts
  96.  
  97. .exe    LEA    $34C4-$2A2E+$1B6(A3),A0
  98.     LEA    TAB(PC),A1
  99.     LEA    $34C8-$2A2E+$1B6(A3),A2
  100.     MOVE.L    #$4DE9,D0
  101.     MOVEQ.L    #$3,D1
  102.     MOVE.L    #$C1DB0158,D5
  103.     MOVE.L    #$2408A86E,D6
  104.     MOVE.L    #$6AC040EA,D7
  105.  
  106. .1    
  107. .2    LSL.L    #1,D7
  108.     BTST    D5,D7
  109.     BEQ.B    .3
  110.     BTST    D6,D7
  111.     BEQ.B    .4
  112.     BRA.B    .5
  113.  
  114. .3    BTST    D6,D7
  115.     BEQ.B    .5
  116. .4    ADDQ.L    #1,D7
  117. .5    ADD.L    D7,(A0)
  118.     ADD.L    (A0)+,D7
  119.     SUBQ.L    #1,D0
  120.     BNE.B    .2
  121. .6    SUBQ.L    #1,D1
  122.     BEQ.B    DECRYPTEND
  123.     MOVE.L    (A1),A0
  124.     CMP.L    #0,A0
  125.     BEQ.S    .7
  126.     ADDA.L    A3,A0
  127. .7    ADDQ.L    #4,A1
  128.     MOVE.L    (A2)+,D0
  129.     BNE.B    .1
  130.     BRA.B    .6
  131.  
  132. DECRYPTEND
  133.     LEA.L    $134(A3),A0
  134.     LEA.L    $928(A3),A1
  135. .1    MOVE.L    #$4E714E71,(A0)+
  136.     CMPA.L    A0,A1
  137.     BNE.S    .1
  138.     LEA.L    $978(A3),A0
  139.     LEA.L    $A54(A3),A1
  140. .2    MOVE.L    #$4E714E71,(A0)+
  141.     CMPA.L    A0,A1
  142.     BNE.S    .2
  143.     LEA.L    $ABE(A3),A0
  144.     LEA.L    $BC6(A3),A1
  145. .3    MOVE.L    #$4E714E71,(A0)+
  146.     CMPA.L    A0,A1
  147.     BNE.S    .3
  148.  
  149.     ADDA.L    #$10000,A3
  150.  
  151.     LEA.L    $2058(A3),A0
  152.     MOVE.W    #2-1,D0
  153.     BSR.S    CDATA1
  154.     LEA.L    $2080(A3),A0
  155.     MOVE.W    #$11-1,D0
  156.     BSR.S    CDATA1
  157.     LEA.L    $2592(A3),A0
  158.     MOVE.W    #2-1,D0
  159.     BSR.S    CDATA1
  160.     LEA.L    $25BA(A3),A0
  161.     MOVE.W    #$11-1,D0
  162.     BSR.S    CDATA1
  163.  
  164.     LEA.L    $FD32-$10000(A3),A0
  165.     MOVEQ.L    #1-1,D0
  166.     BSR.S    CDATA2
  167.     LEA.L    $FD5A-$10000(A3),A0
  168.     MOVEQ.L    #$F-1,D0
  169.     BSR.S    CDATA2
  170.  
  171.     CLR.L    D0
  172.     RTS
  173.  
  174. CDATA1    MOVE.W    #$E,D1
  175.     LEA.L    CTAB(PC),A1
  176. .1    MOVE.B    (A1)+,(A0)+
  177.     DBF    D1,.1
  178.     DBF    D0,.2
  179.     RTS
  180.  
  181. .2    MOVE.B    (A1)+,(A0)+
  182.     MOVE.B    (A1)+,(A0)+
  183.     BRA.S    CDATA1
  184.  
  185. CDATA2    MOVE.W    #$10,D1
  186.     LEA.L    CTAB2(PC),A1
  187. .1    MOVE.B    (A1)+,(A0)+
  188.     DBF    D1,.1
  189.     DBF    D0,CDATA2
  190.     RTS
  191.  
  192. TAB    DC.L    $143FC,0,0
  193. CTAB    DC.B    $46,$55,$43,$4B,$20,$59,$4F,$55,$20,$4C
  194.     DC.B    $41,$4D,$45,$52,$20,$21,$20
  195.  
  196.     EVEN
  197. CTAB2    DC.B    $7B,$7A,$7B,$1D,$0E,$18,$10,$7B
  198.     DC.B    $02,$14,$0E,$7B,$17,$1A,$16,$1E,$09
  199.  
  200.     EVEN
  201.  
  202. CHANGE2    
  203.     DC.B    $00,$80,$00,$2C,$1C,$20,$50,$4F
  204.     DC.B    $50,$55,$4C,$4F,$55,$53,$20,$77
  205.     DC.B    $61,$73,$20,$63,$72,$61,$63,$6B
  206.     DC.B    $65,$64,$20,$62,$79,$20,$74,$68
  207.     DC.B    $65,$80,$00,$49,$16,$42,$45,$53
  208.     DC.B    $54,$20,$2E,$2E,$2E,$20,$51,$55
  209.     DC.B    $41,$52,$54,$45,$58,$20,$21,$20
  210.     DC.B    $20,$20,$20,$80,$00,$60,$03,$20
  211.     DC.B    $20,$20,$00,$80,$00,$64,$06,$20
  212.     DC.B    $20,$20,$20,$20,$20,$80,$00,$6B
  213.     DC.B    $0D,$20,$20,$20,$20,$20,$20,$20
  214.     DC.B    $20,$20,$20,$20,$FC,$86,$00,$00
  215.     DC.B    $00,$7F,$10,$00,$00,$87,$01,$80
  216.     DC.B    $00,$89,$03,$20,$39,$80,$00,$80
  217.     DC.B    $00,$8D,$03,$08,$21,$FA,$00,$80
  218.     DC.B    $00,$91,$03,$20,$37,$AC,$00,$80
  219.     DC.B    $00,$95,$03,$21,$0F,$E5,$00,$80
  220.     DC.B    $00,$99,$03,$21,$23,$F0,$00,$80
  221.     DC.B    $00,$9D,$03,$20,$5E,$04,$00,$80
  222.     DC.B    $00,$A1,$03,$20,$37,$50,$00,$80
  223.     DC.B    $00,$A5,$03,$21,$8A,$3E,$00,$80
  224.     DC.B    $00,$A9,$03,$21,$23,$D8,$00,$80
  225.     DC.B    $00,$AD,$02,$30,$04,$80,$00,$B1
  226.     DC.B    $03,$21,$23,$CC,$00,$80,$00,$B5
  227.     DC.B    $03,$20,$D0,$DC,$00,$80,$00,$B9
  228.     DC.B    $03,$21,$23,$D0,$00,$80,$00,$BD
  229.     DC.B    $03,$FC,$07,$DC,$00,$80,$00,$C1
  230.     DC.B    $03,$FC,$07,$DE,$00,$80,$00,$C5
  231.     DC.B    $03,$FC,$07,$E0,$00,$80,$00,$C9
  232.     DC.B    $03,$FC,$07,$E2,$00,$80,$00,$CD
  233.     DC.B    $03,$FC,$07,$E4,$00,$80,$00,$D1
  234.     DC.B    $03,$FC,$07,$E6,$00,$80,$00,$D5
  235.     DC.B    $09,$FC,$08,$D2,$C1,$DB,$01,$4D
  236.     DC.B    $00,$31,$00,$00,$00,$E5,$31,$80
  237.     DC.B    $09,$28,$50,$60,$00,$00,$4E,$A3
  238.     DC.B    $C3,$7C,$75,$DB,$02,$04,$E7,$9D
  239.     DC.B    $C8,$02,$DB,$9D,$24,$E8,$C6,$00
  240.     DC.B    $00,$00,$00,$00,$00,$00,$00,$00
  241.     DC.B    $00,$12,$6C,$00,$00,$00,$03,$00
  242.     DC.B    $00,$00,$00,$00,$00,$4D,$E9,$B2
  243.     DC.B    $16,$FF,$FF,$00,$00,$4D,$E9,$B8
  244.     DC.B    $6A,$DF,$FF,$6F,$FA,$47,$8D,$88
  245.     DC.B    $4E,$90,$50,$23,$30,$78,$B1,$40
  246.     DC.B    $06,$7A,$B0,$CD,$E8,$BF,$09,$10
  247.     DC.B    $79,$BE,$4E,$80,$0A,$54,$17,$20
  248.     DC.B    $3A,$FE,$F2,$E5,$88,$45,$FA,$01
  249.     DC.B    $F0,$D5,$C0,$47,$FA,$F5,$C6,$D7
  250.     DC.B    $FA,$FE,$DE,$B7,$CA,$67,$00,$80
  251.     DC.B    $0A,$6C,$52,$20,$1A,$61,$38,$22
  252.     DC.B    $48,$4A,$AA,$FF,$FC,$66,$06,$D1
  253.     DC.B    $FA,$FE,$CA,$22,$48,$22,$1A,$67
  254.     DC.B    $E6,$20,$1A,$90,$BA,$FE,$C6,$61
  255.     DC.B    $1E,$24,$08,$4E,$71,$20,$1A,$D5
  256.     DC.B    $B1,$08,$00,$53,$81,$66,$F6,$4E
  257.     DC.B    $71,$60,$E2,$60,$00,$00,$20,$D7
  258.     DC.B    $72,$00,$02,$D7,$98,$00,$02,$41
  259.     DC.B    $FA,$F5,$7A,$4A,$80,$67,$0A,$20
  260.     DC.B    $50,$D1,$C8,$D1,$C8,$53,$80,$66
  261.     DC.B    $F6,$58,$88,$4E,$75,$80,$0B,$C6
  262.     DC.B    $17,$08,$97,$00,$07,$41,$FA,$F4
  263.     DC.B    $5C,$30,$3A,$00,$7A,$67,$04,$4E
  264.     DC.B    $71,$4E,$71,$2F,$48,$00,$02,$4C
  265.     DC.B    $00,$80,$0B,$DE,$6C,$7F,$FF,$F4
  266.     DC.B    $94,$48,$E7,$FF,$FE,$20,$7A,$F4
  267.     DC.B    $D0,$4E,$60,$41,$FA,$00,$42,$45
  268.     DC.B    $F9,$00,$00,$03,$E6,$30,$3C,$00
  269.     DC.B    $0C,$34,$D8,$51,$C8,$FF,$FC,$41
  270.     DC.B    $FA,$F4,$26,$D1,$FA,$FD,$3E,$43
  271.     DC.B    $FA,$F4,$1E,$24,$49,$20,$3A,$00
  272.     DC.B    $3C,$E5,$88,$D5,$C0,$4C,$FA,$00
  273.     DC.B    $FF,$F4,$A2,$20,$39,$00,$00,$00
  274.     DC.B    $04,$22,$00,$2E,$01,$48,$79,$00
  275.     DC.B    $00,$03,$E6,$4E,$71,$4E,$75,$22
  276.     DC.B    $D8,$B3,$CA,$6D,$FA,$42,$99,$B3
  277.     DC.B    $C8,$6D,$FA,$48,$F9,$00,$FF,$00
  278.     DC.B    $00,$00,$08,$4C,$DF,$7F,$FF,$4E
  279.     DC.B    $73,$80,$FB,$D2,$3A,$3B,$5B,$5A
  280.     DC.B    $51,$18,$29,$3A,$38,$30,$3E,$3F
  281.     DC.B    $7B,$39,$22,$7B,$0F,$13,$1E,$7B
  282.     DC.B    $19,$1E,$08,$0F,$7B,$75,$75,$75
  283.     DC.B    $7B,$0A,$0E,$1A,$09,$0F,$1E,$03
  284.     DC.B    $7B,$7B,$7B,$7B,$7B,$7B,$7B,$7B
  285.     DC.B    $67,$9A,$80,$5A,$16,$1A,$A1,$A4
  286.     DC.B    $23,$7B,$DB,$3B,$5B,$58,$89,$80
  287.     DC.B    $FC,$DE,$38,$18,$A1,$A5,$DB,$19
  288.     DC.B    $F2,$5B,$47,$3A,$5B,$5A,$D3,$3D
  289.     DC.B    $6B,$2F,$5B,$3A,$5B,$5A,$91,$3D
  290.     DC.B    $73,$1A,$A1,$A6,$BF,$2B,$5E,$15
  291.     DC.B    $2A,$7D,$5B,$2B,$5F,$15,$2A,$79
  292.     DC.B    $5B,$7B,$58,$15,$2A,$2B,$5D,$15
  293.     DC.B    $2A,$79,$58,$15,$2A,$6F,$61,$A5
  294.     DC.B    $2D,$3A,$5B,$80,$FD,$17,$1B,$FF
  295.     DC.B    $3A,$5B,$5A,$35,$7B,$61,$A5,$05
  296.     DC.B    $3B,$5B,$A5,$81,$1D,$0E,$18,$10
  297.     DC.B    $7B,$02,$14,$0E,$7B,$17,$1A,$16
  298.     DC.B    $1E,$09,$00,$80,$FD,$43,$17,$7B
  299.     DC.B    $7A,$7B,$78,$1B,$5B,$47,$15,$2E
  300.     DC.B    $1D,$0E,$18,$10,$7B,$02,$14,$0E
  301.     DC.B    $7B,$17,$1A,$16,$1E,$09,$00,$80
  302.     DC.B    $FE,$59,$11,$7B,$7A,$7B,$1D,$0E
  303.     DC.B    $18,$10,$7B,$02,$14,$0E,$7B,$17
  304.     DC.B    $1A,$16,$1E,$09,$00,$80,$FE,$6C
  305.     DC.B    $10,$15,$2A,$15,$2E,$29,$A4,$53
  306.     DC.B    $DA,$5B,$5C,$3A,$49,$7B,$67,$5B
  307.     DC.B    $58,$80,$FE,$7E,$10,$3A,$5B,$5A
  308.     DC.B    $0F,$3A,$5B,$5B,$41,$15,$2E,$29
  309.     DC.B    $A4,$1A,$A2,$5B,$E4,$80,$FE,$90
  310.     DC.B    $12,$4B,$DA,$6B,$61,$A7,$AB,$0D
  311.     DC.B    $DB,$5A,$DA,$4B,$DA,$15,$2E,$1A
  312.     DC.B    $A2,$5B,$E4,$80,$FE,$A4,$04,$7B
  313.     DC.B    $67,$5B,$5B,$80,$FE,$AA,$76,$53
  314.     DC.B    $4B,$5B,$5E,$3C,$5D,$08,$DB,$31
  315.     DC.B    $AD,$15,$2E,$2B,$5B,$15,$2E,$13
  316.     DC.B    $BC,$27,$5B,$61,$59,$3A,$5B,$5B
  317.     DC.B    $85,$59,$1E,$5B,$24,$3C,$57,$6B
  318.     DC.B    $61,$A7,$E3,$3A,$5B